import java.lang.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Utiles_Barra {
  Thread hilo;
  Object objeto = new Object();
  boolean pideParar = false;
  JTextField texto;
  JProgressBar barra;
  int min = 0;
  int max = 100;

  
  public Utiles_Barra(int max, javax.swing.JProgressBar barra, javax.swing.JTextField texto) {
  	this.max = max;
  	this.barra = barra;        
  	this.texto = texto;
//	iniciaCuenta();
//	detieneCuenta();
  } 
  public void iniciaCuenta() {
    if( hilo == null ) {
      hilo = new ThreadCarga();
      pideParar = false;
      hilo.start();
    }                                                                                  
  }
  public void detieneCuenta() {
    synchronized( objeto ) {
      pideParar = true;
      objeto.notify();
    }
  }  
  
  class ThreadCarga extends Thread {
    public void run() {      
      barra.setValue( min );
      barra.setMinimum( min );
      barra.setMaximum( max );

      for (int i=min; i <= max; i++ ) {
	barra.setValue( i );
	texto.setText( ""+i );
	synchronized( objeto ) {
	  if( pideParar )
	    break;
	  try {
	    objeto.wait( 100 );
	  } catch( InterruptedException e ) {
	    // Se ignoran las excepciones
	  }
	}
      }
      hilo = null;
    }
  }  
}